package PDF知识点;

/**
 * @description: 统计PDF词频
 * @Author lxs
 * @Date 2025/5/16 9:50
 */
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

import java.io.File;
import java.io.IOException;

public class PDFWordCounter {

    public static void main(String[] args) {
        String pdfPath = "table.pdf";  // 替换为你的 PDF 文件路径
        String keyword = "权限模型";        // 要统计的词语

        try {
            // 加载 PDF 文件
            PDDocument document = PDDocument.load(new File(pdfPath));

            // 提取文本
            PDFTextStripper stripper = new PDFTextStripper();
            String text = stripper.getText(document);
            document.close();

            // 转为小写以便大小写不敏感统计
            String lowerText = text.toLowerCase();
            String lowerKeyword = keyword.toLowerCase();

            // 统计词频
            int count = countOccurrences(lowerText, lowerKeyword);
            System.out.println("词语 \"" + keyword + "\" 出现次数: " + count);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 统计字符串中某个词语的出现次数（基于分词或正则更严谨）
    private static int countOccurrences(String text, String word) {
        int count = 0;
        int index = 0;
        while ((index = text.indexOf(word, index)) != -1) {
            count++;
            index += word.length();
        }
        return count;
    }
}

